<?php

class Application_Model_ClientesMapper
{
	protected $_dbTable;
 
    public function setDbTable($dbTable)
    {
        if (is_string($dbTable)) {
        	//Creamos la instancia
            $dbTable = new $dbTable();
        }
        if (!$dbTable instanceof Zend_Db_Table_Abstract) {
            throw new Exception('Invalid table data gateway provided');
        }
        $this->_dbTable = $dbTable;
        return $this;
    }
 
    public function getDbTable()
    {
        if (null === $this->_dbTable) {
            $this->setDbTable('Application_Model_DbTable_Clientes');
        }
        return $this->_dbTable;
    }
 
    public function save(Application_Model_Clientes $clientes)
    {
        $data = array('id_clientes'  => $clientes->getId_Clientes(),
            		  'nombre'   	 => $clientes->getNombre(),
            		  'apellidos' 	 => $clientes->getApellidos(),
        			  'nif'			 => $clientes->getNif(),
        			  'direccion'	 => $clientes->getDireccion(),
        			  'dire_num'	 => $clientes->getDire_num(),
        			  'dire_piso'	 => $clientes->getDire_piso(),
        			  'dire_puerta'	 => $clientes->getDire_puerta(),
        			  'dire_cp'		 => $clientes->getDire_cp(),
					  'poblacion'	 => $clientes->getPoblacion(),
        			  'provincia'	 => $clientes->getProvincia(),
        			  'pais'		 => $clientes->getPais(),
        			  'telefono'	 => $clientes->getTelefono(),
        			  'telefono2'	 => $clientes->getTelefono2(),
        			  'fax'			 => $clientes->getFax(),
        			  'mail'		 => $clientes->getMail(),
        			  'cod_tipo_clie'=> $clientes->getCod_tipo_clie(),
        			  'empresa'		 => $clientes->getEmpresa(),
        			  'url'			 => $clientes->getUrl(),
        			  'descuento'	 => $clientes->getDescuento(),
        			  'fecha_alta'	 => $clientes->getFecha_alta(),
        			  'fecha_baja'	 => $clientes->getFecha_baja(),
        			  'activo'		 => $clientes->getActivo(),
        			  'eliminado'	 => $clientes->getEliminado()
        
        );
        if (null === ($id = $clientes->getId_Clientes())) {
            unset($data['id']);
            $this->getDbTable()->insert($data);
        } else {
            $this->getDbTable()->update($data, array('id_clientes = ?' => $id));
        }
    }
 
    public function find($id, Application_Model_Clientes $clientes)
    {
        $result = $this->getDbTable()->find($id);
        if (0 == count($result)) {
            return;
        }
        $row = $result->current();
        $clientes->setId_Clientes($row->id_clientes)
            	 ->setNombre($row->nombre)
                 ->setApellidos($row->apellidos)
                 ->setNif($row->nif)
                 ->setDireccion($row->direccion)
                 ->setDire_num($row->dire_num)
                 ->setDire_piso($row->dire_piso)
                 ->setDire_puerta($row->dire_puerta)
                 ->setDire_cp($row->dire_cp)
                 ->setPoblacion($row->poblacion)
                 ->setProvincia($row->provincia)
                 ->setPais($row->pais)
                 ->setTelefono($row->telefono)
                 ->setTelefono2($row->telefono2)
                 ->setFax($row->fax)
                 ->setMail($row->mail)
                 ->setCod_tipo_clie($row->cod_tipo_clie)
                 ->setEmpresa($row->empresa)
                 ->setUrl($row->url)
                 ->setDescuento($row->descuento)
                 ->setFecha_alta($row->fecha_alta)
                 ->setFecha_baja($row->fecha_baja)
                 ->setActivo($row->activo)
                 ->setEliminado($row->eliminado);
    }
 	
    public function delete($id)
    {
    	$this->getDbTable()->delete("id_clientes=$id");
    }
    
    public function fetchAll($estado)
    {
        $resultSet = $this->getDbTable()->fetchAll("activo = $estado", 'nombre ASC');
        $entries   = array();
        foreach ($resultSet as $row) {
            $entry = new Application_Model_Clientes();
            $entry->setId_Clientes($row->id_clientes)
            	  ->setNombre($row->nombre)
                  ->setApellidos($row->apellidos)
                  ->setNif($row->nif)
                  ->setDireccion($row->direccion)
                  ->setDire_num($row->dire_num)
                  ->setDire_piso($row->dire_piso)
                  ->setDire_puerta($row->dire_puerta)
                  ->setDire_cp($row->dire_cp)
                  ->setPoblacion($row->poblacion)
                  ->setProvincia($row->provincia)
                  ->setPais($row->pais)
                  ->setTelefono($row->telefono)
                  ->setTelefono2($row->telefono2)
                  ->setFax($row->fax)
                  ->setMail($row->mail)
                  ->setCod_tipo_clie($row->cod_tipo_clie)
                  ->setEmpresa($row->empresa)
                  ->setUrl($row->url)
                  ->setDescuento($row->descuento)
                  ->setFecha_alta($row->fecha_alta)
                  ->setFecha_baja($row->fecha_baja)
                  ->setActivo($row->activo)
                  ->setEliminado($row->eliminado);
            $entries[] = $entry;
        }
        return $entries;
    }
}

